/*
 * Copyright 2010 Michael Nitsche
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

package de.mnit.basis.swt.spezial.suche;

import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.events.KeyListener;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;

import de.mnit.basis.daten.konstant.position.POSITION_V;
import de.mnit.basis.daten.konstant.sys.SYSTEM;
import de.mnit.basis.swt.anw.A_MN_Gruppe;
import de.mnit.basis.swt.element.S_SWT_Komponente;
import de.mnit.basis.swt.element.feld.werkzeug.knopf.SWT_WerkzeugTaster;
import de.mnit.basis.swt.element.steuer.rollbar.SWT_TextEingabe;
import de.mnit.basis.swt.element.steuer.rollbar.gruppe.SWT_WerkzeugLeiste;
import de.mnit.basis.swt.grafik.icon.direkt.ICON;
import de.mnit.basis.swt.layout.LayoutGitter;
import de.mnit.basis.sys.event.S_Zuhoerer;
import de.mnit.basis.sys.sprache.S;


/**
 * @author Michael Nitsche
 */
public class K_SucheFlach extends A_MN_Gruppe<K_SucheFlach> implements S_KSuche {

	public static void main(String[] args)   { start(K_SucheFlach.class,600,400); }


	private static final S s=new S(K_SucheFlach.class);
	private static final String E_SUCHE="suche";
	public SWT_WerkzeugLeiste	k_loeschen = new SWT_WerkzeugLeiste().s1_Flach();
	public SWT_TextEingabe		k_suche    = new SWT_TextEingabe();
	private SWT_WerkzeugTaster	k_leeren;


	public void eSuche(S_Zuhoerer<String> z) {
		t.zuhoererPlus(E_SUCHE, z);
	}

	public void sLeer() {
		this.k_suche.sText("");
	}

	public String gText() {
		return this.k_suche.gText();
	}

	public void sSichtbar(boolean b) {
		t.k_loeschen.sSichtbar(b);
		t.k_suche.sSichtbar(b);
	}

	public void sAktiviert(boolean b) {
		if(!SYSTEM.gAktuell().istWindows()) //BUGFIX: In XP werden die Disabled-Icon's normal ziemlich bescheiden dargestellt! Leider für Button keine Alternative
			t.k_leeren.sAktiviert(b);
		t.k_suche.sAktiviert(b);
	}

	public void sFokus() {
		t.k_suche.sFokus();
	}


	protected S_SWT_Komponente<?, ? extends Composite> layout() {
		return LayoutGitter.neu()
			.sSpaltenAnzahl(2)
			.sKomponente(t.k_suche)
				.sFlexibelH()
//				.sHoehe(18)
				.sPositionV(POSITION_V.MITTE)
			.sKomponente(t.k_loeschen)
//				.sHoehe(18)
				.sFlexibelV()
				.sBreite(24+2*7)
			.fertig();
	}

	protected void initStyle() {}

	protected void initEvents() {
		this.k_leeren=this.k_loeschen.nFeldBild(ICON._24.AKTION_LOESCHEN, s.t("Filter entfernen"));

		t.k_suche.eTaste(new KeyListener(){
			public void keyPressed(KeyEvent e)   {}
			public void keyReleased(KeyEvent e) {
				String suche=t.k_suche.gText();
				t.zuhoererStart(E_SUCHE, suche);
			}
		});
		this.k_leeren.eAuswahl(new Listener(){
			public void handleEvent(Event event) {
				t.k_suche.sText("");
				t.zuhoererStart(E_SUCHE, "");
			}
		});
	}

}
